package test.specs.novousuario;


import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.notNullValue;
import static org.hamcrest.MatcherAssert.assertThat;

import org.jbehave.core.annotations.Given;
import org.jbehave.core.annotations.Then;
import org.jbehave.core.annotations.When;
import br.com.ffm.info.praticas.fiptwitter.FipTwitter;



public class UsuarioInvalidoCenario {
	private FipTwitter twitter;
	private Exception resultException;

	@Given ("eu tenha acesso ao FipTwitt")
	public void dadoOServicoFipTwitter(){
		twitter = new FipTwitter();
	}
	@When ("crio um novo usuário com login jack senha 12345 e nome Jack Bauer")
	public void quandoCrioUmNovoUsuario(){
		try{
			twitter.novoUsuario("Jack Bauer", "jack", "12345");
		} catch (Exception e){
			resultException = e;
		}
	}
	@When ("crio um novo usuário com login jack senha vazia e nome Jack Bauer") 
	public void quandoCrioUmNovoUsuarioSenhaVazia(){
		try{
			twitter.novoUsuario("Jack Bauer", "jack", "");
		} catch (Exception e){
			resultException = e;
		}
	}
	@When ("crio um novo usuário com login jack senha nula e nome Jack Bauer")
	public void quandoCrioUmNovoUsuarioSenhaNula(){
		try{
			twitter.novoUsuario("Jack Bauer", "jack", null);
		} catch (Exception e){
			resultException = e;
		}
	}
	
	//Usuario com login inválido
	
	@When ("busco por um usuário com login nulo")
	public void buscoPorUmUsuarioComLoginNulo(){ 
		try{
			twitter.buscarUsuario(null);
		} catch (Exception e){
			resultException = e;
		}
	}
	@When ("busco por um usuário com login vazio")
	public void buscoPorUmUsuarioComLogin(){
		try{
			twitter.buscarUsuario("");
		} catch (Exception e){
			resultException = e;
		}
	}
	@When ("busco por um usuário com login chuck")
	public void buscoPorUmUsuarioComLoginChuck(){
		try{
			twitter.buscarUsuario("chuck");
		} catch (Exception e){ 
			resultException = e;
		}
	}
	@Then("deve aparecer o erro: $erro")
	public void deveAparecerOErro(String erro){
		assertThat(resultException, notNullValue());
		assertThat(erro, equalTo(resultException.getMessage()));
		
		resultException = null;
	}
}




